﻿#define _CRT_SECURE_NO_WARNINGS 1

//题目:
//给定一个无重复元素的整数数组nums，请你找出其中没有出现的最小的正整数
//数据范围:−2^31≤nums[i]≤2^31−1		0≤len(nums)≤5*10^4
//输入：[1, 0, 2]	返回值：3
//输入：[-2, 3, 4, 1, 5]	返回值：2
//进阶： 空间复杂度 O(1)O(1)，时间复杂度 O(n)O(n)

#include<stdio.h>
int minNbDd(int* nums, int len)
{
    // write code here
    int arr[50001] = { 0 };
    for (int i = 0; i < len; i++)
    {
        if (nums[i] >= 0)
            arr[nums[i]]++;
    }
    for (int i = 1; i < 50001; i++)
    {
        if (arr[i] == 0)
            return i;
    }
    return 50001;
}
int main()
{
    int nums[] = { 1,0,2 };
    int sz = sizeof(nums) / sizeof(nums[0]);
    int ret=minNbDd(nums, sz);
    printf("%d\n", ret);
    return 0;
}